一、概述
位元陣列 是一個基於位元級別的數據結構,專為管理和操作二進位數據而設計。它允許以靈活的方式記錄位元,並可以透過二進位字串或指定數量來進行初始化。此類別特別適用於需要儲存大量位元數據的場景,並內建了分頁管理機制以及高效的位元邏輯運算(AND, OR, NOT, XOR)功能。
初始化範例
您可以根據不同需求來建立 位元陣列 的實例。
從二進位字串建立
// 根據指定的二進位字串初始化
const bitArray = new 位元陣列("10101");
console.log(bitArray.數量); // 輸出: 5
從數值建立 (指定位元數量)
// 使用數值初始化,代表位元的總數量
const bitArray = new 位元陣列(16);
console.log(bitArray.數量); // 輸出: 16
建立空的位元陣列
// 初始化一個空的位元陣列
const bitArray = new 位元陣列();
console.log(bitArray.數量); // 輸出: 0
二、屬性
數量
取得當前位元陣列的總位元數量。此為唯讀屬性。
型別:
number描述: 回傳位元陣列所包含的總位元數。此數值由內部屬性
#數量維護,主要用於了解陣列的大小。範例:
const array = new 位元陣列(100);
console.log(array.數量); // 輸出: 100
const emptyArray = new 位元陣列();
console.log(emptyArray.數量); // 輸出: 0
.頁面數量
取得當前位元陣列的總頁數。此為唯讀屬性。
型別:
number描述: 根據內部
#頁面陣列的長度,回傳分頁的總數。範例:
// 假設每頁可記錄 24 位元
const bitArray = new 位元陣列(48);
console.log(bitArray.頁面數量); // 輸出: 2
三、方法
constructor(初始值)
建立一個新的 位元陣列 實例。
參數:
初始值(string|number|undefined): 用於初始化位元陣列的值。若為
string,視為二進位字串進行解析。若為
number,初始化對應數量的位元(全為 0)。若為
undefined或其他型別,則初始化一個空的位元陣列。
描述: 根據傳入的
初始值類型來初始化位元陣列。
and(另一個陣列)
將當前位元陣列與另一個位元陣列進行 AND (且) 運算。
參數:
另一個陣列(位元陣列): 用於AND運算的另一個位元陣列。
回傳:
位元陣列- 一個包含運算結果的新位元陣列。拋出錯誤:
參數錯誤- 如果兩個位元陣列的位元數量不相同。範例:
const array1 = new 位元陣列("1100");
const array2 = new 位元陣列("1010");
const result = array1.and(array2);
console.log(result.轉為二進位字串()); // 輸出: "1000"
not()
對當前位元陣列的所有位元進行 NOT (反轉) 運算。
回傳:
位元陣列- 一個包含運算結果的新位元陣列。範例:
const array = new 位元陣列("10110");
const result = array.not();
console.log(result.轉為二進位字串()); // 輸出: "01001"
or(另一個陣列)
將當前位元陣列與另一個位元陣列進行 OR (或) 運算。
參數:
另一個陣列(位元陣列): 用於OR運算的另一個位元陣列。
回傳:
位元陣列- 一個包含運算結果的新位元陣列。拋出錯誤:
參數錯誤- 如果兩個位元陣列的位元數量不相同。範例:
const array1 = new 位元陣列("1100");
const array2 = new 位元陣列("1010");
const result = array1.or(array2);
console.log(result.轉為二進位字串()); // 輸出: "1110"
xor(另一個陣列)
將當前位元陣列與另一個位元陣列進行 XOR (異或) 運算。
參數:
另一個陣列(位元陣列): 用於XOR運算的另一個位元陣列。
回傳:
位元陣列- 一個包含運算結果的新位元陣列。拋出錯誤:
參數錯誤- 如果兩個位元陣列的位元數量不相同。範例:
const array1 = new 位元陣列("1100");
const array2 = new 位元陣列("1010");
const result = array1.xor(array2);
console.log(result.轉為二進位字串()); // 輸出: "0110"
狀態(位元編號)
查詢指定索引位置的位元狀態 (是 1 還是 0)。
參數:
位元編號(number): 要查詢的位元索引,必須大於等於 0 且小於總數量。
回傳:
boolean- 如果該位元為 1,回傳true;否則回傳false。拋出錯誤:
型別錯誤: 如果位元編號不是數字。索引超出範圍錯誤: 如果位元編號超出合法範圍。
範例:
const bitArray = new 位元陣列("1010");
console.log(bitArray.狀態(0)); // 輸出: false
console.log(bitArray.狀態(1)); // 輸出: true
複製()
複製當前的位元陣列,並回傳一個內容相同的新實例。
回傳:
位元陣列- 一個新的位元陣列實例。範例:
const array1 = new 位元陣列("111");
const array2 = array1.複製();
array2.設定狀態(0, false);
console.log(array1.轉為二進位字串()); // 輸出: "111"
console.log(array2.轉為二進位字串()); // 輸出: "110"
解析二進位字串(二進位字串)
解析一段二進位字串,並更新當前位元陣列的內容。
參數:
二進位字串(string): 只包含0和1的字串,可包含空白字元(會被自動忽略)。
回傳:
位元陣列- 回傳當前實例以支援鏈式調用。拋出錯誤:
二進位字串內容錯誤- 如果字串中包含非0或1的字元。範例:
const bitArray = new 位元陣列();
bitArray.解析二進位字串("1010 1100");
console.log(bitArray.轉為二進位字串()); // 輸出: "10101100"
設定全部狀態(狀態)
將所有位元的狀態統一設定為 true (1) 或 false (0)。
參數:
狀態(boolean):true表示將所有位元設為 1,false表示設為 0。
回傳:
位元陣列- 回傳當前實例以支援鏈式調用。範例:
const bitArray = new 位元陣列(8);
bitArray.設定全部狀態(true);
console.log(bitArray.轉為二進位字串()); // 輸出: "11111111"
設定狀態(位元編號, 狀態)
設定指定索引位置的位元狀態。
參數:
位元編號(number): 要設定的位元索引。狀態(boolean):true表示設為 1,false表示設為 0。
回傳:
位元陣列- 回傳當前實例以支援鏈式調用。拋出錯誤:
型別錯誤: 如果位元編號不是數字。索引超出範圍錯誤: 如果位元編號超出合法範圍。
範例:
const bitArray = new 位元陣列(4); // 預設為 "0000"
bitArray.設定狀態(1, true);
console.log(bitArray.轉為二進位字串()); // 輸出: "0010"
bitArray.設定狀態(3, true);
console.log(bitArray.轉為二進位字串()); // 輸出: "1010"
轉為二進位字串()
將整個位元陣列轉換為 0 和 1 組成的字串表示。
回傳:
string- 代表位元陣列的二進位字串。範例:
const bitArray = new 位元陣列(8).設定狀態(1, true).設定狀態(3, true);
console.log(bitArray.轉為二進位字串()); // 輸出: "00001010"